package com.example.main.tab

import android.content.Context
import android.graphics.drawable.Drawable
import android.util.AttributeSet
import android.view.LayoutInflater
import android.widget.ImageView
import android.widget.TextView
import androidx.annotation.ColorRes
import androidx.annotation.DrawableRes
import androidx.core.content.ContextCompat
import com.example.main.R
import me.majiajie.pagerbottomtabstrip.internal.RoundMessageView
import me.majiajie.pagerbottomtabstrip.item.BaseTabItem


/**
 * Author: Jason Zhang
 * Date: 2024/9/18
 * Desc: 普通导航菜单
 */
class NormalTabView : BaseTabItem {

    private lateinit var mIcon: ImageView
    private lateinit var mTitle: TextView
    private lateinit var mMsg: RoundMessageView

    private lateinit var mDefaultIcon: Drawable
    private lateinit var mCheckedIcon: Drawable

    private var mDefaultTextColor = 0x56000000
    private var mCheckedTextColor = 0x56000000

    private lateinit var mTabTitle: String

    private var mChecked = false
    private var mMgsNumber = 0


    constructor(context: Context): super(context){
        initView(context)
    }

    constructor(context: Context, attrs: AttributeSet?): super(context, attrs){
        initView(context)
    }

    constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int): super(context, attrs, defStyleAttr){
        initView(context)
    }

    private fun initView(context: Context) {
        //加载布局
        LayoutInflater.from(context).inflate(R.layout.tab_normal_layout, this, true)
        //初始化组件
        mIcon = findViewById(R.id.tab_icon)
        mTitle = findViewById(R.id.tab_title)
        mMsg = findViewById(R.id.tab_msg)
    }

    fun initData(@DrawableRes defaultIcon: Int, @DrawableRes checkedIcon: Int, title: String, hasMsg: Boolean = false, msgNum: Int = 0){
        //获取图标
        mDefaultIcon = ContextCompat.getDrawable(context, defaultIcon)!!
        mCheckedIcon = ContextCompat.getDrawable(context, checkedIcon)!!
        mChecked = hasMsg
        mTabTitle = title
        mMgsNumber = msgNum
        //设置tab名称
        mTitle.text = mTabTitle
    }


    override fun setChecked(checked: Boolean) {
        if(checked){
            mIcon.setImageDrawable(mCheckedIcon)
            mTitle.setTextColor(mCheckedTextColor)
        }else{
            mIcon.setImageDrawable(mDefaultIcon)
            mTitle.setTextColor(mDefaultTextColor)
        }
        mChecked = checked
    }

    override fun setMessageNumber(number: Int) {
        mMsg.messageNumber = number
    }

    override fun setHasMessage(hasMessage: Boolean) {
        mMsg.setHasMessage(hasMessage)
    }

    override fun setTitle(title: String?) {
        mTitle.text = title
    }

    override fun setDefaultDrawable(drawable: Drawable?) {
        if (drawable != null){
            mDefaultIcon = drawable
        }

        if (!mChecked){
            mIcon.setImageDrawable(drawable)
        }
    }

    override fun setSelectedDrawable(drawable: Drawable?) {
        if (drawable != null){
            mCheckedIcon = drawable
        }

        if (mChecked){
            mIcon.setImageDrawable(drawable)
        }
    }

    override fun getTitle(): String {
        return mTitle.text.toString()
    }

    fun setDefaultTextColor(@ColorRes colorResId: Int){
        mDefaultTextColor = ContextCompat.getColor(context, colorResId)
    }

    fun setCheckedTextColor(@ColorRes colorResId: Int){
        mCheckedTextColor = ContextCompat.getColor(context, colorResId)
    }

}